<?php

if (!defined('APP_NAME'))
    die('access not allow!');

class Hdphp {

    //框架外部执行方法
    public static function run() {
        //定义常用常量
        self::_set_const();
        //创建应用文件夹
        self::_mk_dir();
        //引入核心关键类文件和函数库
        self::_load_file();
        //运行应用类的外部run方法
        Application::run();
    }

    private static function _set_const() {
        /**
         *  设置框架相关常量
         */
        //路径的斜线统一
        $path = str_replace('\\', '/', dirname(__FILE__));
        //定义框架的根路径
        define('HDPHP_PATH', $path);
        //定义项目的根路径
        define('HDPHP_FRAME_PATH', dirname(HDPHP_PATH));
        //定义框架Config路径
        define('HDPHP_CONFIG_PATH', HDPHP_PATH . '/Config');
        //定义框架Lib库路径
        define('HDPHP_LIB_PATH', HDPHP_PATH . '/Lib');
        //定义框架Core核心路径
        define('HDPHP_CORE_PATH', HDPHP_LIB_PATH . '/Core');
        //定义框架Function路径
        define('HDPHP_FUNCTION_PATH', HDPHP_LIB_PATH . '/Function');
        //定义框架Extends路径
        define('HDPHP_EXTENDS_PATH', HDPHP_PATH . '/Extends');
        //定义框架Tool路径
        define('HDPHP_TOOLS_PATH', HDPHP_EXTENDS_PATH . '/Tools');
        //定义框架Data路径
        define('HDPHP_DATA_PATH', HDPHP_PATH . '/Data');
        //定义Smarty模板引擎路径
        define('HDPHP_SMARTY_PATH', HDPHP_DATA_PATH . '/Smarty');
        //定义框架字体路径
        define('HDPHP_FONT_PATH', HDPHP_DATA_PATH . '/Fonts');

        /**
         *   设置应用相关常量
         */
        //设置应用根路径
        define('APP_PATH', HDPHP_FRAME_PATH . '/' . APP_NAME);
        //设置应用Config路径
        define('APP_CONFIG_PATH', APP_PATH . '/Config');
        //设置应用Control路径
        define('APP_CONTROL_PATH', APP_PATH . '/Control');
        //设置应用Tpl路径
        define('APP_TPL_PATH', APP_PATH . '/Tpl');
        //设置应用编译目录
        define('APP_COMPILE_PATH', APP_PATH . '/Temp/Complie');
        //设置应用缓存目录
        define('APP_CACHE_PATH', APP_PATH . '/Temp/Cache');
        //设置应用Public路径
        define('APP_PUBLIC_PATH', APP_TPL_PATH . '/Public');
        //设置判断是否POST传参
        define('IS_POST', $_SERVER['REQUEST_METHOD'] == 'POST' ? true : false);
        //判断是否ajax异步
        define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ? TRUE : FALSE);
    }

    private static function _mk_dir() {
        /**
         *   创建应用相关文件夹/路径
         */
        $dirs = array(
            APP_PATH,
            APP_CONFIG_PATH,
            APP_CONTROL_PATH,
            APP_TPL_PATH,
            APP_PUBLIC_PATH,
            APP_COMPILE_PATH,
            APP_CACHE_PATH,
        );
        foreach ($dirs as $v) {
            is_dir($v) || mkdir($v, 0777, true);
        }
    }

    private static function _load_file() {
        //引入框架核心文件
        $files = array(
            HDPHP_FUNCTION_PATH . '/function.php',
            HDPHP_CORE_PATH . '/SmartyView.class.php',
            HDPHP_SMARTY_PATH . '/Smarty.class.php',
            HDPHP_CORE_PATH . '/Control.class.php',
            HDPHP_CORE_PATH . '/Application.class.php',
        );
        foreach ($files as $v) {
            require_once $v;
        }
    }

}

Hdphp::run();
//框架外部执行..所有代码初始化
?>